import {AxiosInstance, AxiosRequestConfig} from "axios"
import {GenReqUtilReturnType} from '../types/gen-req-util-type.ts'

/**
 * 生成以 GET 方法发送请求的函数的工具函数
 *
 * @param {AxiosInstance} axios axios 实例
 * @returns {GenReqUtilReturnType} 返回一个函数，该函数接收一个对象参数，对象参数包含 url、data、config 三个属性，分别表示请求地址、
 * 要提交到后端的数据、请求配置，生成的函数的返回值类型为 Promise<AxiosResponse<any>>
 */
export const genGet = (axios: AxiosInstance): GenReqUtilReturnType => {
  return (
    {
      url,
      data = {},
      config = {}
    }: {
      url: string,
      data?: Record<string, any>,
      config?: AxiosRequestConfig<any>
    }
  ) => {
    return axios.get(
      url,
      {
        ...config,
        params: data
      }
    )
  }
}
